<?php
class ModelManager {
	/**
	 * RH который используется для создания моделей
	 *
	 * @var RL_UseScript
	 **/
	var $rh;
	
	/**
	 * Ассистент [устарело, тут быть не должен]
	 *
	 * @var Acl_Assistant
	 **/
	var $aa;
	
	final public function __construct(RL_UseScript $rh, RL_DBAL $db, MysqlStore $store) {
		$this->rh = &$rh;
		$this->db = $db;
		$this->store = $store;
		$rh->useClass("RL_Model");
		$rh->useClass("RL_Model2");
	}
	
	/**
	 * Устанавливает главного ассистента, поидее вызывать из контроллера
	 *
	 * @return void
	 * @author Alexander Sibiryakov
	 **/
	public function setAclAssistant(Model_AclAssistant $aa) {
		$this->aa = &$aa;
	}
	
	/**
	 * Вернет модель. Сперва поищет среди свойств менеджера моделей, если не найдет создаст новую.
	 * $type это m или a
	 * @return RL_Model
	 * @author Alexander Sibiryakov
	 **/
	public function getModel($name, $type="m") {
		$vars = get_object_vars($this);
		
		$model_name = $type."_".$name;
		if (isset($vars[$model_name])) {
			return $vars[$model_name];
		} else {
			switch ($type) {
				case "a":
				$m_class = "AggregatedModel_".$name;
				break;
				
				case "m":
				$m_class = "Model_".$name;
				break;
			}
			//if (!isset($this->aa)) { return false; }
			$this->rh->UseClass($m_class);
			$this->$model_name = new $m_class( $this->rh, $this->aa, $this->store, $this->db, $this );
			return $this->$model_name;
		}	
	}
}
